<?php
// ------------------------------------------------------------------------
// |@Author       : Jarmin <edshop@qq.com>
// |@----------------------------------------------------------------------
// |@Date         : 2023-07-12 18:01:26
// |@----------------------------------------------------------------------
// |@LastEditTime : 2023-11-30 09:32:42
// |@----------------------------------------------------------------------
// |@LastEditors  : Jarmin <jarmin@ladmin.cn>
// |@----------------------------------------------------------------------
// |@Description  : 
// |@----------------------------------------------------------------------
// |@FilePath     : Config.php
// |@----------------------------------------------------------------------
// |@Copyright (c) 2023 http://www.ladmin.cn   All rights reserved. 
// ------------------------------------------------------------------------
namespace app\setting\logic;

use think\admin\Logic;

class Config extends Logic
{
    /**
     * 根据条件查询部门列表。
     * 如果 $data 中包含 name 字段，则返回名称包含指定字符串的部门列表；
     * 否则返回全部部门列表。部门列表按 sort 字段递增排序。
     * @param array $data 查询条件。可以包含 name 字段，表示查询名称包含指定字符串的部门列表。
     * @return array 部门列表数组。
     */
    public function getList(array $data): array
    {
        // 查询数据库，获取符合条件的所有部门记录
        $config = $this->modelSystemConfig->where(['type' => $data['type']])->select();
        $configs = [];
        foreach ($config as $item) {
            $configs[$item['type']][$item['name']] = $item['value'];
        }
        // 返回查询结果和执行状态信息
        return $this->json(SUCCESS, lang('config.get_config_list_success'), $configs);
    }

    /**
     * 设置系统显示语言
     * @param array $data
     * @return array
     */
    public function setLang(array $data):array
    {
        $this->modelSystemConfig->where(['type' => 'base', 'name' => 'app_lang'])->update($data);
        return $this->json(SUCCESS, lang('config.set_system_lang_success'), $data);
    }

    /**
     * 保存系统设置
     * @param array $data
     * @return array
     */
    public function saveList(array $data): array
    {
        return $this->tryCatch(function () use ($data) {
            foreach ($data as $name => $item) {
                $this->modelSystemConfig->where(['name' => $name])->update(['value' => $item]);
            }
            // 返回保存结果和部门信息
            return $this->json(SUCCESS, lang('config.save_config_info_success'), $data);
        });
    }
}
